Remote desktop coordinates, utils audit fixes, Python 3.15 console decoding - #490
Merged
Merged
Conversation
…fault UTF-8 mode, where the locale default says UTF-8, and skip distributions without metadata in the SBOM, which 3.15 raises for
…d frame's origin, so clicks land where the viewer clicked on a second monitor, a region, or a virtual desktop reaching above the primary screen
…n that screen in its logical pixels, through shared conversions in gui/_screen_geometry.py
…ere but macOS, where captures and the pointer take points
…anchors and anchor on controls rather than windows, treat a failed heal as a failed step, contain OpenCV errors in video motion and preprocessing, keep 16-bit scans visible, build the HTML report in linear time, and unescape D-Bus addresses
…ff, answer text regions in screen coordinates, find every rotated match, read falsy enabled probes and NumPy tokens in actionability, validate the generated project example, and count spanning grid boxes once
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 1307 |
| Duplication | -7 |
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
…inite consensus points, find columns left of x = 0, leave variable sleeps alone in the recording editors, unwrap action files in the flow debugger, and take one compliance framework as a string
… stay out of records, return colour matches in screen coordinates without matching blank backgrounds, keep mark labels beside their marks, match JSON snapshots to their own payloads, and reject null, containers and unknown types in config schemas
…e variables survive, classify dark-theme widgets, collate ß as ss, take whole floats and any length in checksums, keep the IME wait inside its deadline, keep common terms in TF-IDF and find CJK words inside sentences, trust unique ccorr matches, read OCR text in postconditions, and take every element shape in reading flow
… in its hint, since most said left, top, right, bottom while capturing x, y, width, height
…s, where Pillow's bbox grab saw only the primary one and returned black, answer colour blobs from a region in screen coordinates, and sample AC_wait_actionable's stability where the target was matched
…mixed, huge and bool columns, find short and 16-bit lines, annotate 16-bit screenshots in tone, read only finished runs for test selection, sharding and flakiness, let 0 s steps regress, and refuse empty mining lengths and baggage keys
…on SonarCloud reads as a constant-false typo
… the main display, blocked on Jeffrey_RPA's live capture path
…, the unit the mouse takes
…now interactive roles in every platform's spelling and leave disabled controls out of the Tab order, measure quality and motion on 8-bit frames, give minimized windows no client point, and refuse a NaN focus wait
…ool("false") turned ignore_case and paste on and re-raised in AC_try
…ar macOS fields with Backspace, refuse a missing dataset key and compare cells as rows are compared, keep one-name runs whole and pair only tests that failed together, refuse unknown critic effects and bad TOTP times and windows, and deep-copy merged configs
…val artifacts as JSON, keep quarantine files consistent across processes, refuse non-positive renewal intervals and serialise renewals, accept NumPy bboxes in force mode, report plugins that fail to import, and refuse NaN or negative timeline durations
…ct points there as every other platform expects scaled pixels
…entre sub-pixel matches on the right pixel, save rbac changes before applying them and hand out frozen copies, mask secrets in nested bundle values, refuse malformed rubrics, and release an aborted drag where it stopped
… backend, and stop the recorder replay test moving the real cursor
… app-idle wait inside its deadline, validate retry jitter and caps, refuse asset values their type cannot hold, copy memory-store reads under the lock, keep hand-written skill tags whole and bound self-calling skills, refuse blank locators, and report saga rollback errors over MCP
…oroutines and the Opus track, instead of get_event_loop()
…STs inline on a concurrent server, gate ac_egress_reset and ac_approve_artifact as destructive, log instead of failing on an unwritable audit log, accept root arrays in the JSON tools, and answer malformed JSON-RPC envelopes with -32600
…nners failed on the Backspace key macOS now clears with
…n the Actions-menu slots, report a recording that did not start, crop templates into non-ASCII folders, keep the HUD's own sampling out of its log, and stop the tabs menu leaking on every rebuild
…he hotplug watcher by count so one tab no longer stops another's, move email Poll now and Admin broadcast off the GUI thread, and keep one CallWorker
…catch the next main-window import that forgets to
…rseError from defusedxml, clearing Codacy's last findings on PR #490
…cate Cache-Control directives, and answer is_not_modified for any status
…olicy does not name (RFC 7519 4.1.3), and keep non-JSON claims inside JwtError
…/path into a host, normalise the query before sorting it, and keep an empty ? or #
…lid Max-Age or Expires decide, take Max-Age as ASCII digits only, and ignore a Set-Cookie with a control character
…an unquoted parameter no longer swallows the next link
…its grammar instead of writing them back out, parse tracestate in linear time, and validate a hand-built trace context before formatting it
…ing whitespace, parse an unclosed quote in linear time, skip a BOM, and refuse to dump a key the parser cannot read back
… whole buffer on every chunk
…o a field value cannot inject a part, and read only the boundary parameter
…gettext readers fall back to the msgid instead of showing an empty string
…ep DTSTART's microseconds, let count/until narrow a rule, apply DAILY BYSETPOS, end a series by its gap instead of a fixed 400 years, and refuse rule parts RFC 5545 forbids
…r, and recognise problem+json only as the Content-Type media type
…ck to Babel instead of English, compare =N selectors as numbers, and reject the patterns ICU rejects
…ge what CI enforces
…ough execute_one
["AC_web_run", {"action": "WR_*", "params": {...}}] bound "action" to the
named parameter and lost the command name, so the documented form always
failed. A WebRunner or Selenium error escaped the executor, which only
contains the AutoControl family, and aborted the whole script; it is now
re-raised as WebRunnerBridgeError. Commands run through WebRunner's
execute_one when it exists (its gates, retries and failure screenshots),
and is_webrunner_available no longer imports je_web_runner, which wrote
WEBRunner.log into the cwd. Also: Script Builder entries for AC_web_*, the
example's selector passed as a recorded element name, stale docstrings,
a contract test against the real package, and the executor API and
refused command names WebRunner's new WR_ac_* bridge relies on.
WebRunner's file-dialog, image-on-screen and native-click commands call AC_write, AC_type_keyboard, AC_get_keyboard_keys_table, AC_locate_image_center and AC_click_mouse by keyword; the contract test now fails if one of those parameters is renamed. Progress.md records the typing call WebRunner's basic-auth command still needs: write() and type_keyboard() log, record and return the text they type.
…recording or returning it Every character goes through Unicode key events so it arrives exactly; a backend without Unicode typing refuses before typing. The log gets the length, the record a masked value, and a failure names no character. The executor masks every argument of AC_write_secret. WebRunner's WR_ac_basic_auth sends it.
…on list cannot load os or subprocess
…oded password
Bandit's B105 flagged {"secret": "***"} in the test record as a possible
hardcoded password, failing the security job and Codacy on PR #493. The mask
is now a module constant whose name is not credential-like; the record is
unchanged. Line counts in architecture_explore.md re-measured.
Add write_secret / AC_write_secret: type a password without logging, recording or returning it
…s U-20261001-07, renumber the package gate entry to 08
Gate AC_add_package_to_executor behind a package allowlist
…om a dev.toml that declares what pyproject.toml declares The dev package was uploaded by hand, last in April, from a dev.toml with no pins, no Windows arm64 or BSD markers, one extra out of ten, no console scripts, no pytest plugin entry point and no package data. dev.yml runs the headless suite for dev and, on a push that passes, builds from dev.toml and uploads when the commit is still the tip of dev and the wheel differs from the newest published one. scripts/dev_release.py takes the version from PyPI, so nothing is committed back. Nothing runs until dev carries the workflow.
… names its own cause
…publish Publish je_auto_control_dev from CI on a tested push to dev; align dev.toml with pyproject.toml
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Follow-up to #489: commits pushed to
feat/coverage-to-80after that PR merged, which have not run CI yet.Remote desktop coordinates
gui/_screen_geometry.py(U-20260925-50).Audit fixes in
utils/match_rotated_allreturns every match. Actionability reads falsy probes and NumPy tokens correctly. The generated project example validates, and grid fill counts a spanning box once (U-20260926-01).Python 3.15
Each entry in
docs/updates/2026-09-d.mdlists the tests that fail on the old code. The full headless suite passed locally before each push.